As computing technology advances and computing devices become more prevalent, computer programming techniques have adapted for the wide variety of computing devices in use. For instance, program code can be generated according to various programming languages to control computing devices ranging in size and capability from relatively constrained devices such as simple embedded systems, mobile handsets, and the like, to large, high-performance computing entities, such as data centers or server clusters.
Conventionally, as applications are being developed and/or modified for use with computing devices, authentication of users has typically been approached in one of two ways. The first approach is a pure on-line web-based approach where authentications occur through a mechanism referred to as “cookies”. With this approach, the components and/or dependencies occur on the server side (e.g., web side) and the client side (e.g., client machine, client device) simply user a browser in order to interact with the server side. Thus, software is not installed on the client machine. However, a problem with this approach is that the authenticated session state remains open only while the browser is open. Further, this approach only works on a web application but does not work on an application running on a desktop (e.g., a rich client).
A second approach for authentication is for rich clients. In this approach, software (and complicated dependency) is downloaded and installed on the client machine. In some cases, a problem with this approach is that the software that is downloaded and installed is quite large, which can consume valuable resources on the client machine. Another problem with this approach is that due to the numerous platforms, different software components are created and made available for installation on the different client machines (depending on the supported platform). This can create numerous deployment challenges, which can reduce usability of the system and can create a negative user experience. Additionally, different software components are created and made available for installation on the client machines for different languages.
Consequently, there is no system today that properly supports an authentication mechanism that mitigates the installation of software (complicated dependency). Further, there is no system today that can allow a rich client to interact with server side components in a seamless and integrated manner.
The above-described deficiencies of today's computing system and authentication system techniques are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.